Matlab
code 3.4: Matlab file “Figure 3-15.m”
%--------------------------------------------------------------------
% This
code can be used to generate Figure 3.15
%--------------------------------------------------------------------
clear
all
close
all
%% the
range migration effect and the range wrapping effect of micromotion point(SFCS
radar)
c = 3e8;
j =
sqrt(-1);
f0 = 35e9;
% carrier frequency of transmitted signal
tr =
7.8125e-5; % subpulse repetition interval
t1 =
tr/64; % time duration of subpulse
df =
4.6875e6; % subpulse frequency increment
N = 64;
% number of subpulses in a burst
B =
300e6; % synthetic bandwidth
B1 =
B/N; % bandwidth of the subpulse
mu =
B1/t1; % frequency modulation rate
Rd0 = 5;
% distance between the scatterers and reference point
v = [15
0 -15 -25]; % translational velocity of target
% v =
[0,19,-15,-60]; % Figure 3.15(b)
R =
5000; % distance between the reference point and radar
rmax =
R+Rd0+10; % the minmum detectable distance
rmin =
R+Rd0-10; % the maximum detectable distance
ts =
2*rmin/c; % the starting point of the time sampling
te =
2*rmax/c+t1; % the ending point of the time sampling
dt =
1/B1; % time sampling interval
nt =
2*ceil((te-ts)/(2*dt)); % number of time sampling
df1 =
0:B1/nt:B1*(nt-1)/nt;
tk =
ts+(0:nt-1)*dt; % fast time
s =
zeros(length(tk),N); % echo signal
s0 =
zeros(length(tk),N); % reference signal
Rv =
zeros(1,length(v));
for i =
1:N
for m = 1:length(v)
Rv(m) = R+Rd0+(i-1)*tr*v(m);
td = (tk-2*Rv(m)/c)';
s(:,i) =
s(:,i)+exp(j*pi*mu.*td.^2+j*2*pi*(f0+(i-1)*df).*td).*(td>=0&td<=t1);
end
td0 = (tk-2*R/c)';
s0(:,i) = s0(:,i)+exp(j*pi*mu.*td0.^2+j*2*pi*(f0+(i-1)*df).*td0).*(td0>=0&td0<=t1);
end
sdt =
s.*conj(s0);
sdtf =
ifft(fft(sdt).*(exp(-3*j*pi*df1'.^2/mu)*ones(1,N))); % remove the residual
video phase(RVP)
sdcp =
fftshift(fft(sdtf),1); % coarse range profile
sdcm =
sdcp(nt/2+1,:);
sdhp =
fftshift(fft(sdcm)); % high-resolution range profile
figure
y =
-(-N/2+1:N/2)*c/(2*N*df)+0.5;
plot(y,abs(sdhp)/max(abs(sdhp)))
xlabel('Range
(m)')
ylabel('Normalized
magnitude')
axis([-16
16 0 1.1])